ML }  X c0C)HCCH Mhhݩh `eCDiCD`  RyHP   * 1H0芢@) Y0.Ș` i #(PMR\ \b Pgi 0  % @ / ՠ`d   0DDԝLyN@  )?HI Y0`HIJH) * J j * hJJJ )HJ h i     } YS S0 i`΢ϣ߳H J3xj2h} 1 |9 ӭ45(420 * (0241өX.`  R *i)Lvw  ~*P}E 5 LN(G E  r s k rsrL ( E LO(0d( L iE0O +)$IC  H S8 }q p h   j 8no CDLQ CFl M  LO Ri)Llk2'")*F }$F$F$F$F$ 5 )ШF/Șl]kpqС,LQ/A! Ti)Zlk@ ܬ/i)(")")k }$F$F$F 5$/L /lF@jj(LNkle$$%8(k()` R 8 ELO Ri)^>jf | NrC s } ) vw5g   enfo Glvw LQ@iLm>j FL ~Jjjjii p qEh }jlrs`LQ:$ȱ$@+[_#{ 8  Խut! ai 8   E I   ] C } H h    ˰ 8  N   Lm E  ,  [ `LQ ,/ 8 ~/  Ơ? ѩ}/  [ /Lj0?MoLn FjMqLp NklLOLQnLoMlNLO R"(+}ըHH`Q R!!  % !   / .   FȑF! /GF \H"+0+* }! F tLQnm: J~nTF1F  *n+)5! n (, n)1JJJn(n*o} I ,0  ci a oF? @ , 8,0 ʩ0H Eh   i}  D ]DmmFLQvtu`*&!*@h ] 0 ^0` c 0l$$%}()()%*&J%H,@hH hH@,h $% 8i8$(%)0hhH ]h`() c 0H c 0 h}`hhh&JJ ](ll  LQ0  /qnoHH 9 9 H H  I9  9 } Nd EH  Q8 o n  FnoL HII/ Ih8`h`Lnon`no`u F }E VEhLO/luF l0BF/lɜɛ׽hE N  b VFL FREE SECTORS C} H) *Fh ):FȽ F FC IH' 0 d  i:Fȩ/F.l`CD/08HDIC}IHȰ/F`ȱ$>.+.i ȱ$:刄H !A \ Hȱ$*?ȝ 2. ? [_{ ,0}-:) 0$:>WI  IТ,LQH  0hLd ~ t u`C ?( 0(C.` E } R =! .ti S0N EE D XC )0')AY  )ע ? 0E088FG \o}n  (HhLcL3 iJ i Lqp 0=rspnqopqlk`jZj0  j FL`H}FhȑFȽlFi0 h FFLFpvqwgneofLF pq7  G0i 0 FJJh1FqȱFpȱFk`B!}08`hEE D 8. =D}tui( TʩL`b!)    cȌaȌd b`aab}H8 hdaHcd8 cH hHH  \h hc` =Hh I8ih( t  ( t(!` L\}CJfCJfCJfCDfC` a  HII  INdh  `h  `n)8jHniPoijIjFIjFIjh` a } I 38  8H0 I  ' H LQ8j Y  8j NdY  &I &I &IHeH.p!}Iiq  `!.莿 2Jjj }.m Ȉ!m FG` ɩLQ z "} e Hi04 \ Ȍ  8 i h !`I0 `C Y8.`DOS SYS#} I  ` ~ݩ.C/`ba.m۩mѤC9 `C L] H  ,- '0 l $}, BLVDE`D1:AUTORUN.SYS8hhJ ȱHȱIȱBȱDȱEeeHHLV)  %}1*  ,,p-  0 I &  '0   Lw)l, 0  I&LD1:MEM.SAV&}E:D1:DUP.SYS;DI&!!%NT=q$1OmBqGNrpA,ɤyD}Qe'} D  C D     )16CS S)  C)D1 p p (}0 C9DI pCDL~CiCDiD` DD˙` d J)L !)}D L(( LL()  L| L( S LH 0p n  *} CY?  q  L L  ` )+} `A! d߰")-݆ "  $G@LLL&0") $G%,}H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0-})8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH).}  hyhyB q L> Lm JJ  Ln*` dB%'/}8  H H` 1 { LL   !L     Hh SY?  q  1L0}  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L1}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@2}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q3} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF 4} G) *Gȩ GȽG GȌd q q G`  8   0G  `D5}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y6}`piH n0)բY? 08`0 7}  0$L GGȽG L `8L`L8}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`9}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE:} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR;}1LJ舩9GIH`LJJ`HGHh l`<} S gL   8 rii `дCDCG W  =}C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}>}  |||DDOS DOSDOS SYS }?}}@}CDOS SYSA} 0`BDELV !B B}`LVUQ   ]   TU J ]L!T  #      TU C} L ? .  t`GBJ V~DEHI B V0dVD}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEhE}DEL8HI   0 HI,0 0  9 .G VLOF},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHIG} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHIH} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO I}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -J}LLu DEHILV 9 .l 9 .l  `` s$B VBHK}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVLL}1u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2eM}1i1232435ޥ<<8@}  ,kSTARBYTd************************n* STARS 3D DEMO *x* O} BY CRAIG PATCHETT ** ANALOG COMPUTING #16 *************************6-BC6* $3800 HEX-P}%Aw"   6-?:,VV32,49,56,32,145,56,169,0,141,200,2,169,7,162,56,160,38,32,92,228,169,253,141,0,Q}2XX169,56,141,1,2,169,192,141,14,212,76,35,56,32,13,57,169,0,141,173,63,76,98,228,169__189,141,189,62,169,59,141,205,R}62,162,0,142,221,62,232,189,188,62,24,105,48,157,189,62,189``204,62,105,0,157,205,62,169,0,157,221,62,232,224,16,208,229,S}169,189,133,204,169,59,133,205__160,255,162,3,169,0,145,204,136,192,255,208,249,202,240,5,230,205,76,106,56,162,0,189,189T}bb62,133,204,189,205,62,133,205,169,64,160,0,145,204,232,224,16,208,235,96,169,119,133,204,169\\57,133,205,169,0,141,U}173,63,160,3,169,206,145,204,200,208,2,230,205,173,10,210,41,7,72``170,189,111,57,174,173,63,157,237,62,104,238,173,63,10V},170,173,10,210,41,63,201,48,176,247__24,125,189,62,145,204,200,208,2,230,205,189,205,62,105,0,145,204,200,208,2,230,205,W}192,67"``208,189,169,65,145,204,200,169,119,145,204,141,48,2,200,169,57,145,204,141,49,2,169,35,141,ZZ47,2,96,174,173,6X}3,189,237,62,141,10,212,141,22,208,238,173,63,64,162,13,32,50,57,326WW50,57,162,12,32,50,57,32,50,57,202,48,17,222,87,57,2Y}08,248,32,50,57,189,99,57,157@^^87,57,76,29,57,96,189,189,62,133,204,189,205,62,133,205,188,221,62,177,204,10,10,145,204JZ}SS144,15,169,1,136,192,255,208,2,160,47,145,204,152,157,221,62,96,8,8,6,6,4,4,3TKK3,2,2,1,1,8,8,6,6,4,4,3,3,2,2,1,1,34,3[}6,38,40,42,44,46,34,112,112,240D2:STARS3D.BAS157,221,62,96,8,8,6,6,4,4,3TKK3,2,2,1,1,8,8,6,6,4,4,3,3,2,2,1,1,34,360100 ; *********************0110 ; * STARS 3D DEMO *0120 ; * BY CRAIG PATCHETT *0130 ; *********************0140 ;01]}50 ; System equates0160 ; 0170 SDMCTL = $022F0180 NMIEN = $D40E0190 RANDOM = $D20A0200 WSYNC = $D40A0210 SDLSTL = $0230^}0220 VDSLST = $02000230 COLPF0 = $D0160240 COLOR4 = $02C80250 SETVBV = $E45C0260 XITVBL = $E4620270 ; 0280 ; Zero-page_} equate0290 ; 0300 INDRCT = $CC ; for indirect addressing0310 ; 0320 *= $38000330 ; 0340 ; Get things going035`}0 ; 0360 INITIL0370 JSR STRINI ; set up stars0380 JSR DLSINI ; set up display list0390 LDA #0 ; set baa}ckground color0400 STA COLOR40410 LDA #7 ; set up VBLANK0420 LDX #VBLANK/2560430 LDY #VBLANK&255044b}0 JSR SETVBV0450 LDA #DLI&255 ; get DLI's going0460 STA VDSLST0470 LDA #DLI/2560480 STA VDSLST+10490c} LDA #1920500 STA NMIEN0510 ALLDON0520 JMP ALLDON ; let things run0530 ; 0540 ; VBLANK routine0550 ; 0560d} VBLANK0570 JSR CNTDWN ; take care of star movement0580 LDA #0 ; reset index0590 STA INDEX0600 JMP e}XITVBL ; back to system0610 ; 0620 ; Initialize stars0630 ; 0640 STRINI0650 LDA #STRLIN&255 ; set up STRTPL/H arrayf}s0660 STA STRTPL0670 LDA #STRLIN/2560680 STA STRTPH0690 LDX #00700 STX STRPOS0710 INX 0720 STRg}BR10730 LDA STRTPL-1,X ; make each address a screen0740 CLC ; width more than the one0750 ADC #48 h} ; before0760 STA STRTPL,X0770 LDA STRTPH-1,X0780 ADC #00790 STA STRTPH,X0800 LDA #00810 Si}TA STRPOS,X0820 INX 0830 CPX #160840 BNE STRBR10850 LDA #STRLIN&255 ; clear star memory0860 STA INDRj}CT0870 LDA #STRLIN/2560880 STA INDRCT+10890 LDY #2550900 LDX #30910 LDA #00920 STRBR20930 STA k}(INDRCT),Y0940 DEY 0950 CPY #2550960 BNE STRBR20970 DEX 0980 BEQ STRBR30990 INC INDRCT+11000 l} JMP STRBR21010 STRBR31020 LDX #0 ; give each line a star1030 STRBR41040 LDA STRTPL,X1050 STA INDRCTm}1060 LDA STRTPH,X1070 STA INDRCT+11080 LDA #641090 LDY #01100 STA (INDRCT),Y1110 INX 1120 Cn}PX #161130 BNE STRBR41140 RTS 1150 ; 1160 ; Initialize display list1170 ; 1180 DLSINI1190 LDA #DLIST&255 ;o} set up for indirect1200 STA INDRCT ; addressing1210 LDA #DLIST/2561220 STA INDRCT+11230 LDA #0 ;p} get index ready1240 STA INDEX1250 LDY #31260 DLSBR41270 LDA #$CE ; ANTIC 14, DLI, LMS line1280 STA (q}INDRCT),Y1290 INY 1300 BNE DLSBR11310 INC INDRCT+11320 DLSBR11330 LDA RANDOM ; pick star type1340 r}AND #71350 PHA 1360 TAX 1370 LDA MANCOL,X ; tell STRCOL what color1380 LDX INDEX ; this line is1390 s} STA STRCOL,X1400 PLA 1410 INC INDEX1420 ASL A ; times two so we skip over1430 TAX ; two t}screen widths...1440 DLSBR21450 LDA RANDOM ; pick random offset into1460 AND #63 ; line1470 CMP #48 u}; make sure it's less than1480 BCS DLSBR2 ; a screen width1490 CLC 1500 ADC STRTPL,X ; ...here instead of onev}1510 STA (INDRCT),Y ; put it into display list1520 INY 1530 BNE DLSBR51540 INC INDRCT+11550 DLSBR51560 w} LDA STRTPH,X1570 ADC #01580 STA (INDRCT),Y1590 INY 1600 BNE DLSBR61610 INC INDRCT+11620 DLSBR6x}1630 CPY #67 ; 192 lines done, finish up1640 BNE DLSBR41650 LDA #$411660 STA (INDRCT),Y1670 INY y}1680 LDA #DLIST&2551690 STA (INDRCT),Y1700 STA SDLSTL1710 INY 1720 LDA #DLIST/2561730 STA (INDRCz}T),Y1740 STA SDLSTL+11750 LDA #$23 ; give us a wide screen1760 STA SDMCTL1770 RTS 1780 ; 1790 ; Disp{}lay list interrupt routine1800 ; 1810 DLI1820 LDX INDEX ; what line are we on?1830 LDA STRCOL,X ; load this lin|}e's color1840 STA WSYNC ; wait for end of last line1850 STA COLPF0 ; store color1860 INC INDEX ; get read}}y for next line1870 RTI 1880 ; 1890 ; Timer routine1900 ; 1910 CNTDWN1920 LDX #13 ; move fastest star1930 ~} JSR SCROLL1940 JSR SCROLL1950 LDX #12 ; and its twin1960 JSR SCROLL1970 JSR SCROLL1980 CNTBR119}90 DEX ; for the rest...2000 BMI CNTRET2010 DEC TIMER,X ; ...countdown timer2020 BNE CNTBR12030 } JSR SCROLL ; scroll if ready2040 LDA TIMARY,X ; and reset timer2050 STA TIMER,X2060 JMP CNTBR12070 CNTRET}2080 RTS 2090 ; 2100 ; Star scroll routine2110 ; 2120 SCROLL2130 LDA STRTPL,X ; set up for indirect2140 ST}A INDRCT ; addressing2150 LDA STRTPH,X2160 STA INDRCT+12170 LDY STRPOS,X ; get star position2180 LDA (I}NDRCT),Y ; get byte with star in it2190 ASL A ; shift star left one2200 ASL A2210 STA (INDRCT),Y ; put i}t back2220 BCC SCRBR1 ; did it fall off byte?2230 LDA #1 ; if so, put it in next one2240 DEY 2250 C}PY #255 ; did it fall off screen?2260 BNE SCRBR22270 LDY #47 ; if so, put it on other end2280 SCRBR22290 } STA (INDRCT),Y2300 TYA 2310 STA STRPOS,X ; remember where it is now2320 SCRBR12330 RTS 2340 ; 2350 TIMER}2360 .BYTE 8,8,6,6,4,4 ; timers for scrolling2370 .BYTE 3,3,2,2,1,12380 TIMARY2390 .BYTE 8,8,6,6,4,4 ; values} to reset timers2400 .BYTE 3,3,2,2,1,12410 MANCOL2420 .BYTE $22,$24,$26 ; star colors2430 .BYTE $28,$2A,$2C2}440 .BYTE $2E,$222450 ; 2460 DLIST2470 .BYTE $70,$70,$F0 ; display list2480 *= *+5792490 STRLIN2500 *=} *+768 ; star (screen) memory2510 STRTPL2520 *= *+16 ; addresses of beginning of2530 STRTPH2540 *= *+16 } ; each star line2550 STRPOS2560 *= *+16 ; position of star on line2570 STRCOL2580 *= *+192 ; color of }each line2590 INDEX2600 *= *+1 ; used to index into STRCOLar on line2570 STRCOL2580 *= *+192 ; color of FRS 1 FIPIISSULINECOUNICRSRANGLINCOUNCHECKSUNUMBEPRODUCITETOTADATU }@ @  } 88 DEBUGGING AID BY ISTVAN MOHOS""VERSION 2 MODS BY TOM HUDSON[ + }([(FThis run will LIST data statements with the name: , to the disk.(i(f([The DATA is created by evaluatin }g each character of a user program, LISTed to disk.i(2;@,<&@"(ENTER FILENAME&F*6-F:A }Y,6-*P,((ENTER ISSUE NUMBER( @,Z* @`*@@dA }Anf (},(DISABLING SCREEN...STAND BY...@-@AD PAYfdebug before pokingx 6- };A&,( AP@(6-%@ A0K@6-P:'@,69,9,;@,K+" })4,A0II@:7@<@,, @H)@:7@<@,,!@WA06-@ @4 6-6 }-#-@@067<,. 4  6-*@6-@*6-%@87<,0  67<,.7<,. }6-%@8 A 6-A:, 68,-6-%@ Ap@%6-%@%"@A } A@$@6-@$ @-@6-"F)@6-$ 6-%.6-%@:"@ }F6-@,"AUA 6 A@?6-&A$P:'A,'68,-3!@ ?6-@J T@ }@1@@D:BUG:6-8,@6-^'6-@6-! @'6-h @ DATA  }rB-@$6-8@$%,6 @,>6-%B | @36-%@6-&@3 @ }A  6-8, AP@AYUU(M}To check data against printed data statements, t }ype NEW. Then type:\\(ENTER >:@4,@D:BUG . Type LIST after the READY prompt.U(U(JThe } line number of each data statementcoincides with the first line of the88(0user program which the data statement evaluate }s.aa(YNumbers within each data statement represent consecutive lines of the user program.%%(The last number is } the total.R(R(GCheck the number of each state- ment against the printed version;PP(Honly in case of a discre }pancy check each number in the data statement.]](7Make note of the lines containing the bugs. Then ENTER >:@4, }D:yourprog# (to make the corrections.#PAY(}P(5Your typed-in program was not properlyLISTed to } disk.e(_(*Please LIST your program to disk, thenRUN >:@4,D:CHECK>:@4, again.be D2:CHECK2. }BASk.e(_(*Please LIST your program to disk, thenRUN >:@4,D:CHECK>:@4, again.be D2:CHECK2. 9:sOUTICRISSULINECOUNPLILINUNLCTOTACHKSUPRODUC} d88 DEBUGGING AID BY ISTVAN MOHOSn!!VERSI}ON 2 MODS AND CASSETTExVERSION BY TOM HUDSONT +(T(?This run will LIST data statements to the screen or }printer.i(f([This DATA is created by evaluating each character of a user program, LISTed to tape.i(&&;@},;A(,;@,>$(OUTPUT TO CREEN OR RINTER(>0S*0PA`5 4S+@@}E:5 A7@3(READY PRINTER AND PRESS 7- A-@@P:,((}ENTER ISSUE NUMBER( A,M('(READY TAPE AND PRESS G@@C:J(M('6-}6-6-'6-@B A@@(6-%@B6-A:7@<@,,/6-%@/!@* }@A"@A(@6-@S 4S6-%@%"@C(PRESS TO CO}NTINUEGS6- 6- (@ DATA "! 6-!@ !6-@,R-@B:,$6-$@:7<,,},6-%:6-%@F"@R6-@6= 6-%$AU%6-%@1"@=6-@@6-&A$P}:'A,J'(@,6-%' A0T@"Ap^(@h@rD (}D(}5Your typed-in program was not properlyLISTed to tape.|n(](*Please LIST your program to tape, thenRUN >:@4,CHEC}K>:@4, again.h@kn D2:CCHECK.BAS](*Please LIST your program to tape, thenRUN >:@4,CHEC=GHHDATTITLECNIXAAJMCPYLVHLHVMVZVBSFPVIFDAT@} }d SAMPLE PROGRAM AND SUBROU-n}TINE FOR PRODUCING A BARxCHART. WRITTEN BYTHOMAS P. NEWDOMEINITIALIZE CHARACTER SET9@2,};@0,: +6-BsD:6-+F:AB,&@,$AV9 +@-@@9(@ INITIALIZING}%-@X%6-$@ 6-%6-%-@%F:%,   4 +@-@}@4(@STANDBY6-%A #A'-@ '6-%$@#-@}"#%   "255,255,24,24,24,24,24,24,255,255,24,24,0,0,0,06255,255,0,0,0,0,0,0@3,3,3,3,3,3,3,}31J3,3,3,3,3,3,3,127T0,0,0,0,0,0,0,0^0,0,0,0,0,0,0,126h0,0,0,0,0,0,126,126r0,0,0,0,0,126,126,126|}0,0,0,0,126,126,126,1260,0,0,126,126,126,126,126!!0,0,126,126,126,126,126,126##0,126,126,126,126,126,126,126}%%126,126,126,126,126,126,126,126##126,126,126,126,126,126,126,0!!126,126,126,126,126,126,0,0126,126,126,126},126,0,0,0126,126,126,126,0,0,0,0126,126,126,0,0,0,0,0126,126,0,0,0,0,0,0126,0,0,0,0,0,0,0BRANC}H TO USERS PROGRAM ABAR CHART SUBROUTINEARRAY DAT() AND TITLE$SHOULD BE PREPARED BY THE&USE}RS PROGRAM036-P:8@,,$6-8@,36-8@,5< @)!@9(PLOT TYPE MUST BE 1,2, OR 3<&:,}6-8@,6-@6,6-%@?E ?B(.THE RANGE FOR EACH VERTICAL MARK MUST BE > .01E&D"@}6-@8N'"@6-@4'6-@X3 +!AV'AV3AUbHORIZONTAL AXISl}"-@@ "(>:@,v-@@ (>:,F:@,A-@(>:@},  A@HORIZONTAL LABELS6-@!@A-@! (JFMAMJJASONDJFMAM}JJASOND-@"(!-@#@"!(%@ A0 -@!(+"@6-%@+6-}%@ +"@6-%@+6-%@*A6-&A4 F:@, @5A>)$-@$}&+B:,,'@@#)(HVERTICAL AXISR-@\-@ (>:@,f p)6-6}-)6-$@z6-@%P:',# 6-@6-#6-' 6- 6- A}6-%@!@A  6-& A A 06-6- 6-6-&@} A` 6-% A APLOT DATA$-@.6-8&@,'&8} 6-N:,6-O:,B*"6@*%!@*6-@&L*"@*& 6@*6-%@V 6-P:,`6-+&},$@j 6-P:,t!+&,?P!6-%@~)"@6-%@)6-"6@A@}"A -&@ -&(>:@, &6@A  -&(>:@%,} A  -(>:@,"A-@ -%(>:@,  "A} -%%@(>:@!&,( 2AdAU< F:Ad,"AUA@F$PSUBROUTINE F}OR RIGHTZJUSTIFICATIONd!B) 6B &n 6-O:,6-@x! 6-P:,!6-P:+&,$A,"}A06-@&P:L:,, AP" -(.0" A`#-&@#(-.}0-@ (>:@,$BEGINNING OF USER PROGRAM #A -@@2" 68,- }80,1,-5,2$$0,.25,.5,.75,1,1.25,1.5,1.75,20,-1,-2,-3,-4,-5%%0,4,6,8,10,12,24,32,12,10,9,8,6##6.PLOT TYP}E 1 - HIT ANY KEY" A`,468@,-@*6. PLOT TYPE 24 A`6468@,-@*6. PLOT TYPE 3}4 A`@ +D2:BARCHART.BAS-@*6. PLOT TYPE 24 A`6468@,-@*6. PLOT TYPE 3.0100 ; JOYSTICK PORT PRINTER HANDLER0110 ; EPSON VERSION0120 ; -----------------------------0130 ;} Program by Paul S. Swanson0140 ;0150 ; OS equates0160 ;0170 HATABS = $031A ; device handler address table0180 }PACTL = $D302 ; port A control register0190 PORTA = $D300 ; port A I/O register0200 TRIG1 = $D011 ; stick trigger 1 r}egister0210 ;0220 ; Program equates0230 ;0240 ORIGIN = $0680 ; start of new handler0250 DUMMY = $FFFF ; dummy address} for JMP vector0260 ;0270 *= ORIGIN0280 ;0290 ; Start of new handler table0300 ;0310 NEWTABLE0320 ;0330 ; These }are the new handler vectors,0340 ; presented in the order CIO expects them0350 ;0360 .WORD OPEN-10370 .WORD CLOSE}-10380 .WORD GETBYTE-10390 .WORD PUTBYTE-10400 .WORD STATUS-10410 .WORD SPECIAL-10420 ;0430 ; JMP to in}it (also expected by CIO)0440 ;0450 JINIT0460 JMP EXIT ; dummy init routine0470 ;0480 ; OPEN subroutine0490 ;05}00 OPEN0510 LDA #$FF ; set port A to "output"0520 BNE PASETUP0530 ;0540 ; CLOSE subroutine0550 ;0560 CLOSE0}570 LDA #0 ; set port A to "input"0580 ;0590 ; Configure port A0600 ;0610 PASETUP0620 LDX #$380630 STX} PACTL ; enable data direction control0640 STA PORTA ; specify "input" or "output"0650 LDA #$3C0660 STA PA}CTL ; reset addressing mode0670 LDA #$FF0680 STA PORTA ; clear the port0690 LDY #1 ; OK status for CI}O0700 RTS 0710 ;0720 ; PUT BYTE subroutine0730 ;0740 PUTBYTE0750 LDY TRIG10760 BNE PUTBYTE ; wait for ackn}owledge0770 SEI 0780 ;0790 ; Process byte to send0800 ;0810 CMP #$9B ; is this an Atari EOL?0820 BNE PUT}1 ; ignore if not0830 LDA #$0D ; else convert to printer CR0840 PUT10850 ORA #$80 ; set for active high s}trobe0860 STA PORTA ; and send byte to printer0870 JSR JINIT ; waste a few cycles0880 AND #$7F ; end th}e strobe pulse0890 STA PORTA0900 ;0910 ; Wait for acknowledge0920 ;0930 LDY #00940 PUT20950 LDA TRIG1 ; }printer ready?0960 BNE PUT3 ; yes - continue0970 DEY 0980 BNE PUT2 ; else keep waiting0990 LDY #$8A} ; timeout error code1000 CLI 1010 RTS 1020 PUT31030 LDY #1 ; no errors1040 CLI 1050 RTS 1}060 ;1070 ; Unimplemented functions1080 ;1090 GETBYTE1100 STATUS1110 SPECIAL1120 LDY #$92 ; error code1130 EXIT}1140 RTS 1150 ;1160 ; Initialization code1170 ;1180 PINIT1190 LDY #0 ; init index1200 PLOOP1210 LDA }HATABS,Y ; get an ID byte1220 CMP #'P ; is this the "P" entry?1230 BEQ FOUND ; yes, so change entry1240 }INY ; otherwise skip 3 bytes1250 INY 1260 INY 1270 BNE PLOOP ; and keep looking for "P"1280 ;1290 }; Change table entry so that1300 ; it points to our new handler1310 ;1320 FOUND1330 LDA #NEWTABLE&255 ; lsb of table }addr1340 STA HATABS+1,Y1350 LDA #NEWTABLE/256 ; msb1360 STA HATABS+2,Y1370 ;1380 ; The following JMP vector }will be1390 ; set up when the handler is loaded1400 ;1410 JMP DUMMY1420 ;1430 .END ; The following JMP vector auRABYTd""* STICK-PORT PRINTER HANDLERn* BASIC LOADERx* PROGRAM BY PAUL SWANSON} * READ HANDLER INTO MEMORY-AdAv"  ""* ADJUST RESET & JMP VECTORS}AwF:@,AxF:@,'@A'@@""* WARMSTART INSTALLS HAN}DLER!!(PRINTER HANDLER IN MEMORY%%(PRESS ͠ TO INSTALL",6* MACHINE LANGUAGE DATA@S}S142,6,146,6,212,6,169,6,212,6,212,6,76,215,6,169,255,208,2,169,0,162,56,142,2J^^211,141,0,211,169,60,141,2,211,169,255,1}41,0,211,160,1,96,172,17,208,208,251,120,201,155TWW208,2,169,13,9,128,141,0,211,32,140,6,41,127,141,0,211,160,0,173,17,208},208,7,136^ZZ208,248,160,138,88,96,160,1,88,96,160,146,96,160,0,185,26,3,201,80,240,5,200,200,200h00208,244,169,128,153},27,3,169,6,153,28,3,76D2:INTRFACE.BAS96,160,146,96,160,0,185,26,3,201,80,240,5,200,200,200h00208,244,169,128,153/P#b#XSTIKYSTIKGMANNWORDSXWORDXQUEXMANYMANNLTSWORDLTTERSTPADJUSTCONVERTWALDELETBLANSLOXFLYFLW }DSLEFLGLGXYEXCLAPAUSFCWINNE@@@@@@@@@ } @  } !"#$%- FOUR LETTER WORDS }- the Prototype- Joel Gluck, Nov/Dec '83- 2 players, joysticks A - INITIALIZE A0 }- GAMEx- INITIALIZE4~~9@,9@,9@,9@,9@,9@,9@,9@, }9@,;A,;@,>&&;@,9@,;@,f3-@@"&68,-/68,-3 p7 }71,1,1,-1,1,0,0,0,-1,1,-1,-1,-1,0,0,0,0,1,0,-1,0,036-A86-A1'6-@236-@'6-@6-@!}'6-@#W68,-@I-68@,-AxB68,-@W68@,-@ X68,-@!}-68@,-@C68,-6@2X68@,-@ 6. 1234567890 W-@S67$@%!}@<$@%@,.7@<@,W . -@@8 --67<,.>:@e%P:H:@,$@&,,B "!}@A$L -@&@V 7<,47<,' A#``  j   # A#- flash killer word !}+@%@ k0@@70@@@Q0@@ @k0@@@!} a,@@+/@@=/@@#O/@@#a/@@ [-@#,@!}//@#C,%@@W/%@@#[  K,@'/@9,@@K/@!}@# O,@ @+,@ @=,@@O,@@ A8,",@!}/8@,A,@ --@@-6-@:7<,,%@2 :-@@:- number of each letter ! }on field( " A)"- PLACE LETTER GLT<   d -@n $ 6-8, A)$- PLACE MANx  68,-! }68,-}  Ap- CLEAR SLOTS 68,-  J $T ""- PLACE LETTER GLT (rtn X,Y)^ ]96-+P:H:@,$! }@,%@,$@%&@]6-P:H:@,$@,$@%r  1A)| !!2%@@! }  , %%2 $ - GAME 6-P:H:@,$@, 6-@&0 6-! }R:, "@A1:  A@- MOVED A1- CHECK MOVE' 6-8,6-8,'@w(18!},%8,%"% ApP($!"8@&, A`!$& " Aq$&- DELETE CHAR*  AB$!}*- BUMPED SUMTHIN'- MOVE MAN",8,8,'//2$@0%@@@,68,-8,%68,!}-8,%6 8,,8,8,;%%2@$h - BUMPr"A`|%A(,8,%!}8,%A8,")8,"@) Ap3 ACA-1st letter-@8,22>:%8,,47$@%<$!}@%,ABp  ACs%2@@9-@@P= _2!}s- repeated letter,8,%8,%$- letter is OK68,-8,%@0067$@%8,<$@!}%8,,.>:%8,,,8,%8,%( %8,(,8,&@%8,k-@ @P@E2!}%$@ @@I k2 AA%- move man/ 6- A)/- replace let!}ter on field8, @$0- WORD COMPLETED:-@@DBB@:7$@%<$@%,,@:7<,,%!}8,%@2ADPN Xb68@&,-@,-@@D(@ forbiddenN APb- word was deadly!}b- DID OPPONENT USE WORD?g<"8@&,"AF<- opponent has no wordsl-@@v??67<,.!}>:@:7$@%<$@%,,&8,%8@&,, -@8@&,g7@<@,47+@&,$!}@%$@<+@&,$@%$@%@,AE - word was used already  AF! Ar!- t!}ransfer a word Ap- clear slots""8@&,@AP$- DID P(LAYER) USE WORD?-8,"!}AG-- P has no words -@8,g7$@%@<$@%@,47$@%$@<$@!}%$@%@,AFP- word was used already   AG*X-@X@:7$@%$@%!}<$@%$@%,,&8,%A(/,%8,%@ 4B -@6? >2@&@!}B >K-@K@:7$@%$@%<$@%$@%,,C,%8,%@ H Ap$\! }- THE WORD IS BRAND NEW!f68,-8,%@p-@@zee67$@%8,$@%&@<$@%8!!},$@%&@,.7$@%<$@%, ,6-8,%@ !@#,6-@Q -8,Q(@7!"}$@%8,$@<$@%8,$@%@,z -AP@P6@ <2@@P-@!#}@T v2z %%26-&@ Ap!$}!*8, @$- WE HAVE A WINNER+ 6-8@&,!8,+6-@& 6-8,!-!(@!%}winA-%@!1%1,@=/@#A  -@@-A6!&}W2@@C2@'@@@W0@(   2a%2!'}?0@a2@<.+T:,")T:@,".%F A!(}Qp- SWAP TOP DISPLAYSu8+8,"*8@,"5 ApP8$zG%2@@@@G!)}2@@@@++67@<@,.7@<@,-@@N8@,N67<,!*}.>:@:7@%<@%,,&8@,%8,,N8,N67@%<@%,.>:@:7<,,&8,%8@!+},, 96-8,*68,-8@,968@,-0@@-@!,}-@@3 !8,),8,%&@3 Aa@<#@:7$@%<$@%,,<,8,%&@!-}   0@X -@6@62@@T2@%@@!.}X $X- CLEAR SLOTSb-,8,-/8,%@l68,-v$- BUMP SOUND !/}-@6@P9!2AU&@5-@@9 A%29-!0}@@= A $- DELETE LETTER8," ApP$b -@P6@<2!1}@@@ b2##,8,%8,&@68,-8,&@$ %%-!2} TRANSFER A WORD FROM P TO 1-PR)6-%@!@#)6-@\G-8@&,G(@7$@%@<$!3}@%@,aG%2AT@@G2@AU@@f8,"Atp,6-8!4},%@ !@#,6-@z+ -8,(@ +- 4 SPACES''68@&,-8@&,%@46-8!5}@&,%@(!@#46-@-@ee67@<@,.>:@:7$@%8,$@%<$@!6}%8,$@%,,&8,%8@&,,qq67+@&,$@%8@&,$@%<+@&,$@%8@&,$!7}@%,.7@<@,.@:7@<@,,.,8@&,% -@P@;2@!8}@@? a22@2@!9}68,-8,&@-A@@;2@@_2@%@@@c 2!:}2@L$@- FLASH SECRET WORDJ+@%@T70!;}@70@@@r/-@@/(@ do not spell-@@"-@!<}@"(@44-@6?p%?`$+"@,052A5@'@!=}Y2@$@@@] 2@7-@@'(@ 7- four!>} spaces-@@   $ D2:FLW.BAS7-@@'(@ 7- four B_`HDZABCDXSTICKYSTICKNAMEMOVEDLICCWORCVACUNDEINVWAICUNDERCHAXYREBRIGHCO%@}@@ @ %A}H +@((@ GRAPHIC%B}S 10/7H(@please stand by...AR@ A ӠҠ Ǡ̠%C}Š Ю̠ ?1;AV,;AV,;AV,;AV,?THE BUFFERS119@,%D}9@,;@,;@,STICK DIRECTIONS? #@ !-@@%".68,-2";68,-%E}? GG0,0,0,0,0,0,0,0,1,1,1,-1,1,0,0,0,-1,1,-1,-1,-1,0,0,0,0,1,0,-1,0,0IITHE FILL SUBROUTINE. LIMITS SET%F} AT 80 PIXELS ACROSS, 80 DOWN.WE USE PAGE 6/ #@&!-A6A%"+/ ##104,104,104,133,2%G}09,173,254,6##133,212,173,255,6,133,213,169 0,133,231,160,1,165,85,145$$203,133,233,133,214,165,84,145$$205,%H}133,234,133,215,132,232,32!!184,6,133,230,197,209,208,1 !!96,32,221,6,177,203,133,214!%%177,205,133,215,230,214,165%I},214"201,80,176,8,32,184,6,208# 3,32,164,6,198,214,198,214$""165,214,201,255,240,8,32,184%6,208,3,32,164,6,2%J}30,214&""230,215,165,215,201,80,176,8'32,184,6,208,3,32,164,6(%%198,215,198,215,165,215,201,255)240,8,32,184,%K}6,208,3,32* 164,6,198,232,240,4,200,76+!!52,6,164,231,240,95,132,232,%%177,212,145,205,177,207,145,203-!!136,208%L},245,160,1,169,0,133.231,76,52,6,32,221,6,230/$$231,240,75,164,231,165,214,1450$$207,165,215,145,212,164,235,961%M}32,200,6,169,7,157,66,32""32,86,228,164,235,197,230,963$$132,235,165,214,133,85,165,2154 133,84,162,96,169,0,157%N},7253,157,73,3,96,32,200,66 169,11,157,66,3,165,209,327##86,228,164,235,96,165,234,1338!!84,165,233,133,85,96,%O}32,23796,104,104,96,0,0,0,0:;66SET UP BUFFER ADDRESSES FOR ML ROUTINE ACCESS<=B6-P:C:,'AV,*6%P}-C:,&$AV6ABA>B6-P:C:,'AV,*6-C:,&$AV6ABA?B6-P:C:,'AV%Q},*6-C:,&$AV6ABA@B6-P:C:,'AV,*6-C:,&$AV6ABAAB%R}ӠРC;@2,D9@,%68,-:68@,-@O68@,-@d68@%S},-@ y68@,-@68@,-@68@,-@E +@AR@FG"A#%T}A("GTIA GR.10H+@@+FOOL SCREEN HANDLERIJACOLOR 0KA@%U}COLOR 2LA@8COLOR 3MAACOLOR 9N A AH COLOR 10O AA %V}COLOR 11PAARCOLOR 8QR4 #@!-@1%"0C:,%4 S33F:A`,%AV$F:%W}Aa,%@AAT?AP:C:,'AV,?AC:,&F:A,$AVU"BBA"ENABLE DLIVS%X}"( THIS IS GRAPHICS 10/7;( P. BUDGELL 1983O-@APS W##@@K:X%Y}Šˠ٠YZ.6-F:@,&A(. @[@B7t\@@72,169,0,141,10,212,141,%Z}27,208,141,26,208,169,144,69,79,37]8878,141,24,208,169,10,69,79,37,78,141,23,208,104,64^_7 #@!-@@%[}%"367<,.>:,7 `104,162,16,76,86,228aO6-@@6-@@(8@,76-8@,C6-@O6-%\}b AINTRODUCTIONc(6-F:Ad, AU( Ad! Ap A! @eH 1,%]}06-+",$8@,D-@@H n% ,!-@@% x  ,"T:,"%^}",$56-R:,6-%8,)"@56-@y"6@6-&6-%8,"@%_}&6-@y"6@6- @1$")@"AdAU""@:D, A%`}" A""@:F, A " A""@:C, A0" A;"@:X, >:A%,1 @>:A%a}%,; A""@:L, A@" A""@:S, AP" A""@:R, A`" A11(>:%b}A%,ӠҠՠ--(% D=DRAWTO MODE F=FILL C=COLORCHANGE--(% X=NEW SCREEN L=LOAD S=SAVE %c}SCREEN--($ R=COLOR REG. SPACE=REGULAR MODE$**(" REGULAR DRAW MODE - PRESS TRIGGER( Ҡ  (%d} (TO ERASE USE COLOR 0 ) .6-F:@,&A(. A0@B7t$77(>:A%,$%e}Ϡ: PRESS TRIGGER TO DEFINEG-(%NEW STARTPOINT; PRESS AGAIN TO DRAWTOG(PRESS ANY KEY TO EXITJ A"T:%f},"4B2y:6-@6-J A!6-F:Ad, AU!$ Ap AK T:%g},"ALN Ap"T:,"&,,2/DB2yN AV$6-F:Ad, AU%q}SBJDOS SYSBNSTARS3D BASB1\STARS3D ASMBCHECK2 BASBCCHECK BASB#BARCHARTBASBINTRFACEASMBINTRFACEBASBGFLW BASB7?PAINTER BASB*FILL ASMBTRANS ASMBACTION4 BASBACTION5 BASBACTION6 ACTBACTION7 ACTBACTION8 ASMB USING BASBMFONT BASB"6XLDEMO BASBXSTARMAINBASBwSTARCASSLSTBzSTARDISKLSTS}SSTARS ASM!'$$W A A T:,"A?$- ,-$6-?:A6<,*6--$ )6-%@%r}"@)6- & 8,6-8,&( Ҡ =  $0&(>:A%,ĠԠſ0 A@p(%s}(( GIVE NAME SUCH AS D1:XX.Y OR C:1( FILE NAME '4C:)4C1 AA @@tA%t}P@*ARF:@,?ASF:@,QAVA(cAW@tSET UP IOCB #16-?:C:,,%u}6-@$)@2A%6 -@ BBA* B-$[( ԠΠ8%v}@@A)C:B A@@[SHORT IRG FOR CASSETTE4*(>:A%,ŠϠԠſ?4 APp$$( G%w}IVE NAME eg. D1:XX.Y or C:0( FILE NAME &4C:)4C0 AQ @@tAP@%x}*ARF:@,?ASF:@,QAVA(cAW@tSET UP IOCB #156-?:C:,,5MULTIPLE O%y}F 128 BYTES MUST BE MOVEDJ-@/*@F:A%,3 JCOLOR REGISTERS LAST-@ BB%z}A* B-$//(&ԠΠҠǠŠŠ AQ 3INITIALIZE APp /#@@%{}A(C:/SHORT IRG AP@p6,(>:A%,GIVE REGISTER # TO CHANGE6 A`z%%(BETWEEN 704 AND 712 %|}INCLUSIVE( REGISTER !! A)!AA`%!( GIVE BRIGHTNESS 0 - 15 %!! )!@%}}A`@!( GIVE COLOR 0 - 15 !!! )!@A``$@% B$D2:PA%~}INTER.BAS!( GIVE COLOR 0 - 15 !!! )!@A``$@% B$D2:PA$ 0100 ; ̠ŠǠϠ0110 ;0120 ; CIO EQUATES USED0130 ;0140 CIO = $E4560150 ICCOM = $03420160 ICBLEN = $)}03480170 CGBINR = $07 ; GET BINARY RECORD0180 CPBINR = $0B ; PUT BINARY RECORD0190 ;0200 BUFA = $CB ; ADRESSES)} FOR IND,Y0210 BUFB = $CD ; ADDRESSING FOR0220 BUFC = $CF ; PIXEL COORDINATE0230 BUFD = $D4 ; STORAGE0240 )};0250 XPOS = $55 ; X COORDINATE see OS0260 YPOS = $54 ; Y COORDINATE " "0270 ;0280 COLOR = $D1 ; COLOR TO)} PLOT0290 ;0300 ; THE FOLLOWING LOCATIONS CAN ONLY0310 ; BE USED TEMPORARILY, BECAUSE THEY0320 ; ARE RESERVED FOR THE FLO)}ATING POINT0330 ; ROUTINES.0340 ;0350 COLOVER = $E6 ; COLOR TO COVER0360 COUNTNEW = $E7 ; # NEW PIXELS0370 COUNTOLD =)} $E8 ; # PIXELS TO TEST0380 ; AROUND0390 XPSTOR = $E9 ; STORE ORIGINAL XPOS0400 YPSTOR = $EA0410 XP )}= $D6 ; X COORDINATE0420 YP = $D7 ; Y COORDINATE0430 TEM = $EB ; TO STORE Y INDEX0440 ;0450 ; Š)}̠ŠӠŠ0460 ;0470 *= $06000480 ;0490 PLA 0500 PLA 0510 PLA ; THE COLOR TO PLOT)}0520 STA COLOR0530 LDA $06FE ; BUFD ADDRESS STORED0540 STA BUFD ; HERE BECAUSE OF THE0550 LDA $06FF )} ; LIMITED FREE SPACE0560 STA BUFD+1 ; IN PAGE 00570 ;0580 LDA #00590 STA COUNTNEW ; INITIALIZATION0600 )} LDY #1 ; ONE PIXEL FIRST TIME0610 LDA XPOS ; FROM O.S.0620 STA (BUFA),Y0630 STA XPSTOR0640 STA X)}P ; FOR THE FIRST LOCATE0650 LDA YPOS ; FROM O.S.0660 STA (BUFB),Y0670 STA YPSTOR0680 STA YP )} ; FOR THE FIRST LOCATE0690 STY COUNTOLD ; ONE PIXEL0700 JSR LOCATE ; GET COLOR TO COVER0710 STA COLOVER0720)} CMP COLOR ; ITSELF ?0730 BNE PRELOOP0740 RTS ; IF ITSELF QUIT OR GET0750 ; INFINITE)} LOOP !0760 ;0770 PRELOOP JSR PLOT0780 LOOP LDA (BUFA),Y0790 STA XP ; X FOR CURRENT PIXEL0800 LDA (BUFB),Y)}0810 STA YP ; Y FOR CURRENT PIXEL0820 ;0830 LOOP0 INC XP ; TEST TO RIGHT0840 LDA XP0850 CMP #80 ;)} RHS LIMIT TO SCREEN0860 BCS LOOP10870 JSR LOCATE ; IF WITHIN SCREEN0880 ; THEN SEE IF THE PIXEL)}0890 ; CONTAINS THE COLOR TO0900 ; BE OVERWRITTEN. THE0910 ; LOCATE ROUTINE)}0920 ; CONTAINS THE COMPARE.0930 ;0940 BNE LOOP10950 JSR KEEP ; PLOT IT AND MARK IT0960 ; )} FOR ITS OWN TEST0970 ; NEXT TIME THROUGH THE0980 ; LIST OF LOCATIONS.0990 ;1)}000 LOOP1 DEC XP1010 DEC XP1020 LDA XP1030 CMP #255 ; CHECK SCREEN LHS1040 BEQ LOOP21050 JSR LOCA)}TE1060 BNE LOOP21070 JSR KEEP1080 ;1090 LOOP2 INC XP1100 INC YP ; TEST BELOW1110 LDA YP1120 C)}MP #80 ; BOTTOM OF SCREEN1130 BCS LOOP31140 JSR LOCATE1150 BNE LOOP31160 JSR KEEP1170 ;1180 LOOP3 D)}EC YP1190 DEC YP1200 LDA YP1210 CMP #2551220 BEQ LOOP41230 JSR LOCATE1240 BNE LOOP41250 JS)}R KEEP1260 ;1270 LOOP4 DEC COUNTOLD1280 BEQ DONELOOP ; ALL POINTS DONE1290 INY ; ELSE DO NEXT POINT1300 )} JMP LOOP1310 ;1320 DONELOOP LDY COUNTNEW1330 BEQ RETURN0 ; IF NO NEW POINTS1340 ; IN THE COLOR TO)}1350 ; COVER REMAIN1360 ;1370 STY COUNTOLD ; THIS BECOMES THE1380 ; NEW # PIXELS TO)}1390 ; PLOT AND TEST1400 ;1410 TRANSFER LDA (BUFD),Y1420 STA (BUFB),Y1430 LDA (BUFC),Y1440 )}STA (BUFA),Y1450 DEY 1460 BNE TRANSFER ; MOVE BUFFERS1470 LDY #11480 LDA #01490 STA COUNTNEW ; INITI)}ALIZE1500 JMP LOOP ; BEGIN AGAIN1510 ;1520 ; ŠӠ1530 ;1540 KEEP JSR PLOT ; Y REG. IN TEM1550 )} INC COUNTNEW1560 BEQ RETURN2 ; BUFFER OVERFLOWS1570 LDY COUNTNEW1580 LDA XP ; STORE THE COORD.1590 )} STA (BUFC),Y ; OF THIS PIXEL1600 LDA YP ; FOR PLOTTING AND1610 STA (BUFD),Y ; TESTING.1620 LDY TEM )}; RECOVER Y REG.1630 RTS 1640 ;1650 LOCATE JSR POS1660 LDA #CGBINR1670 STA ICCOM,X1680 JSR CIO ; C)}IO LOCATE1690 LDY TEM1700 CMP COLOVER ; PIXEL IN A REG.1710 RTS 1720 ;1730 POS STY TEM1740 LDA XP1750 )} STA XPOS ; POSITION X1760 LDA YP1770 STA YPOS ; AND Y1780 LDX #$60 ; TO USE IN LOCATE1790 LD)}A #0 ; AND IN PLOT1800 STA ICBLEN,X ; ONE PIXEL AS1810 STA ICBLEN+1,X ; IN ACCUM.1820 RTS 1830 ;1840 PL)}OT JSR POS1850 LDA #CPBINR1860 STA ICCOM,X1870 LDA COLOR ; THE ONE TO PLOT1880 JSR CIO1890 LDY TEM)}1900 RTS 1910 ;1920 RETURN0 LDA YPSTOR1930 STA YPOS1940 LDA XPSTOR1950 STA XPOS1960 RTS 1970 ;19)}80 RETURN2 JSR RETURN01990 PLA ; WE EXITED A SUBROUTINE2000 PLA ; SO POP RETURN ADDRESS2010 RT)}S ; TO BASIC2020 ;2030 ; ϠŠҠ٠Ӡ2040 ; ŠҠΠؠ2050 ; ŠΠԠ)}Ӯ ; TO BASIC2020 ;2030 ; ϠŠҠ٠Ӡ2040 ; ŠҠΠؠ2050 ; ŠΠԠ(0100 ; ŠҠ0110 ;0120 *= $06000130 ;0140 PLA ; TERMS0150 PLA 0160 STA $0355 ; -}ICBADR+1+$100170 PLA 0180 STA $0354 ; ICBADR+$100190 LDA #00200 STA $03580210 LDA #$20 ; MAX PO-}SSIBLE LENGTH0220 STA $03590230 LDA #7 ; C. GET BIN. REC.0240 STA $03520250 LDX #$100260 JSR $E-}456 ; IGNORE ERRORS0270 RTS 0280 ;DA #7 ; C. GET BIN. REC.0240 STA $03520250 LDX #$100260 JSR $E,+F"FLAGCOUNPRIMTIM * ERATOSTHENES SIEVE ;A,1} AY '@'@ 6--@A67<,.T 1}-A((7%@<%@,4F@'6-%%@ 6-%!A@& 67%@1}<%@,.F 6-% @"6-%@ %%6-F:@ ,%AV$F:@,AY@41}( PRIMES IN( JIFFIES D2:SIEVE.BAS %%6-F:@ ,%AV$F:@,AY@40<  -EXSCREETIM * SCREEN-FILL BENCHMARK +@$ '@'5}@  %%6-F:@,%AV$F:@,-@1-A9%AU 5}6-%A@ %%6-F:@ ,%AV$F:@, +  JIFFIES D2:FILL.BASAU 4lBYTE RTCLOK=20, ; addr of sys timer SDMCTL=559 ; DMA controlBYTE ARRAY FLAGS(8190)CARD COUNT,I,K,PRIME,TIMEPROC SI9}EVE() SDMCTL=0 ; shut off Antic RTCLOK=0 ; only one timer needed COUNT=0 ; init count FOR I=0 TO 8190 ; and9} flags DO FLAGS(I)='T OD FOR I=0 TO 8190 DO IF FLAGS(I)='T THEN PRIME=I+I+3 K=I+PRIME 9} WHILE K<=8190 DO FLAGS(K)='F K==+PRIME OD COUNT==+1 FI OD TIME=RTCLOK ; 9}get timer reading SDMCTL=34 ; restore screen PRINTF("%E %U PRIMES IN",COUNT) PRINTF("%E %U JIFFIES",TIME)RETURN 8|BYTE RTCLOK=20, ; addr of sys timer SAVMSCL=88, ; lsb of screen addr SAVMSCH=89, ; msb I,J,TIME ; declare=} variables CARD SCREENPROC BENCH() GRAPHICS(24) RTCLOK=0 SCREEN=SAVMSCL+256*SAVMSCH FOR I=0 TO 31 DO =} FOR J=0 TO 239 DO POKE(SCREEN+J,255) OD SCREEN==+240 OD TIME=RTCLOK GRAPHICS(0) PRINTF(=}"%E %U JIFFIES",TIME)RETURN POKE(SCREEN+J,255) OD SCREEN==+240 OD TIME=RTCLOK GRAPHICS(0) PRINTF(<0100 ; DISASSEMBLY OF COMPILED0110 ; ACTION! SCREEN-FILL0120 ; BENCHMARK (LISTING 7)0140 ;0A}150 ; DEFINE ADDRESS CONSTANTS0160 ; ------------------------0170 RTCLOK = 200180 SAVMSCL = 880190 SAVMA}SCH = 890200 ;0210 ; GLOBAL VARIABLE STORAGE0220 ; -----------------------0230 *= ORIGIN0240 I *=A} *+1 ; reserve 1 byte for0250 J *= *+1 ; each BYTE variable,0260 TIME *= *+10270 SCREEN *= *+2 ; 2 bytes forA} CARDs0280 ;0290 ; PROC BENCH()0300 ; ------------0310 JMP START0320 ;0330 ; If our procedure used A}local variables,0340 ; they would have been stored here.0350 ; That's why the above JMP is included.0360 ;0370 ; A}GRAPHICS(24)0380 ; ------------0390 START0400 LDA #240410 JSR GRAPHICS0420 ;0430 ; RTCLOK=0044A}0 ; --------0450 LDY #00460 STY RTCLOK0470 ;0480 ; SCREEN=SAVMSCL+256*SAVMSCH0490 ; ----A}----------------------0500 LDA #00510 STA TEMP1+10520 LDA SAVMSCH ; move SAVMSCH into0530 STA TEMP1 ; TA}EMP10540 LDA # >256 ; msb of multiplier0550 TAX 0560 LDA # <256 ; lsb0570 JSR MULTIPLY0580 STA TEMA}P40590 TXA ; save (256*SAVMSCH)0600 STA TEMP4+1 ; into TEMP40610 ;0620 CLC 0630 LDA SAVMSCL ; adA}d SAVMSCL to0640 ADC TEMP4 ; (256*SAVMSCH) and0650 STA SCREEN ; store in SCREEN0660 LDA #00670 ADC TEMA}P4+10680 STA SCREEN+10690 ;0700 ; FOR I=0 TO 31 DO0710 ; ----------------0720 LDY #00730 A}STY I ; init I-loop0740 ILOOP0750 LDA #310760 CMP I ; reached limit yet?0770 BCS JINIT ; no - dA}o another J-loop0780 JMP GETIME ; else get timing0790 ;0800 ; FOR J=0 TO 239 DO0810 ; --------------A}---0820 JINIT0830 LDY #00840 STY J ; init J-loop0850 JLOOP0860 LDA #2390870 CMP J ; reachedA} limit yet?0880 BCS DOPOKE ; no - poke another byte0890 JMP ADD240 ; else update SCREEN0900 ;0910 ; POKA}E(SCREEN+J,255)0920 ; ------------------0930 DOPOKE0940 CLC 0950 LDA SCREEN ; add SCREEN to0960 ADCA} J ; J, and0970 STA TEMP2 ; save in TEMP20980 LDA SCREEN+10990 ADC #01000 STA TEMP2+11010 ;1020A} LDY #2551030 LDX TEMP2+11040 LDA TEMP2 ; poke (SCREEN+J) with1050 JSR POKE ; a 2551060 ;1070 ; A} OD (for J loop)1080 ; ---------------1090 INC J1100 JMP JLOOP1110 ;1120 ; SCREEN==+2401130A} ; ------------1140 ADD2401150 CLC 1160 LDA SCREEN ; add SCREEN and1170 ADC #240 ; 240; store resA}ult1180 STA SCREEN ; in SCREEN1190 LDA SCREEN+11200 ADC #01210 STA SCREEN+11220 ;1230 ; OD (foA}r I loop)1240 ; ---------------1250 INC I1260 JMP ILOOP1270 ;1280 ; TIME=RTCLOK1290 ; -A}----------1300 GETIME1310 LDA RTCLOK1320 STA TIME1330 ;1340 ; GRAPHICS(0)1350 ; -----------136A}0 LDA #01370 JSR GRAPHICS1380 ;1390 ; PRINTF("%E %U JIFFIES",TIME)1400 ; ------------------------A}----1410 JMP OVER ; skip over in-line string1420 STRING1430 .BYTE 13 ; length of string1440 .BYTE "%E %A}U JIFFIES"1450 OVER1460 LDA #0 ; msb of TIME1470 STA TEMP3 ; into TEMP31480 LDY TIME ; lsb into Y1A}490 LDX # >STRING ; msb of string addr1500 LDA # @'?A'@A ""CREATE-A-FONT by Vince ErcegI}PROGRAM WRITTEN: 8/2/83(2o Ao;@,;@,;@,;@%,;@2,;@B,9,I}9,9,;,;,;,7n6.>:@0,!6.>:@),)6. 267,.;67,.L67@%,. U67,.n6.ERDICSLFI}T-=+*UKQ:AFB6.>:@',+ A .-@2">67,.>:,B K%-@2"!67,.>:,% P' -I}#68&,-P:#%?P,' Z26-F:,&6-+%,$&A#2BBy_/B2w6-&/6-?:C:,<BsD<$,I}d1+ A8AU%1B7tnW 6-$'6-?:C:,<&$<$,9AAHEAWAI}AHxQB2HAh'B2PAh9B2QAhEAQA}'AB2V'B2I}XKAR-%-@1/-%%C(>:$@2%,G K =B2Y!-&A&'+ =I}B2SA`36-F:,%F:,$%$%&@-&3S-%A%A%-3%@C%%I}ApS%%ApQ%%A2@ ! +6-%$5 A;6-G@FQ A02 -(ditI}(everse'(ata2(nvert9 (lear( ave Font)( oad Font9( rom (Copy)K@@!-@/(I} o (Copy)K(>:AV, Scroll UPY(>:AW, Scroll DN=(>:AX, Scroll LeftY(>:AY, Scroll I}RT\ (ndo( olor change&(uit2@>-@Y(ntic 4/5 Atari\$2 6-A!AI}2F:,"A F:,"A/-%@0%()-%@0%/(  R:,"*T:,*F:,"A(I}T:,A  6-R:,F:, A06-%+!* ,&+!* ,336-%+",%+",%+",&+",&+",&+"@,I}  6-" !6-,  6-6 !6-@8 -%@0% (*-$. 8 AJF:,"@I}9@fTFK:)96-$+!@A* @,F(A^--@7<,0>:,# - I}AhA A@APAAA APAAA0APApAA0J}A@A`AAPr^ A6-@&0-A`@@6<B2SD-%H(P6-&^ AJ}| *-A`B2S! '-*$(T:,A A A1 6-%$-#68,-J}F:%,' 1 A P6-%@1&F:,(2, 6 A p= ApA8!-/-@#%9(FJ}:%,=  - ( PRESS JOYSTICK ;(BUTTON TO CONTINUE'1%%1-%%;(>:, --5 J}-%%(>:,!-%%-(>:%,1 5 T:,A3A8AU Ap) A3 AH -J}68,-F:%$, '-/-@%$%8&,D H  A p1-%@2#2' 1 A pJ}H Ap((5(FILE (dev:filename.ext)9C A H -A#86-F:%,%J}%**F:%,. 8 ApU (>:AS, SAVE COMPLETE.-A2 < ApAK AU A&H AJ}p((5(FILE (dev:filename.ext)9C ApH+-A#0( )%% ( J }Ap52 (>:AS, LOAD COMPLETE.-A2 :& Ap A& A0Dj 6-6- Ap6(J }LOCATE CHARACTER TO COPYT(AND PRESS JOYSTICK BUTTON^ Ad6-j6-N4 -%F:%$%, * Ap4 AJ }X: --(%$%F:%$%,, 0 : Abl 6-6- Ap2(LOCATE CHARACTER TO H(REPLACE AJ }ND PRESS\(JOYSTICK BUTTONf Al6-lF 6--$%$%F:%$,( 2 Ap< AF AvS -J }68,-F:%$, (6-8,0->68&,-8,B K68,-S-K-6%$%8,92A&$&@J}= A K A pN -68,-F:%$, (6-8,3-6A68,-8&,E N68,-C-6-%J}%$%8,12$5 9 C A p) -68,-F:%$,)68,-8,$$ 8,!68,-8,&$ AB J}--&%$%8,024 8 B A pB -68,-F:%$,&6-8,'/"P:,868,-B A J}68,-P:,%D --&%$%8,22&6 : D A p$ -%8, $ A PJ}W Ap A@+(COLOR REGISTER/2(=(COLORAD(S( LUMINANCEW?6-%A? A)!A)J} )!) )!A@C $%"AF:A,, Ap6 AC(A  A`Y Ap+(PRESSJ} 'Y' TO EXIT PROGRAM0>K:E)Y"@A! Ap A! A ;-@1-%F:J}BsD%&%P:',,1 ; A p6+@4B2w''3A86 1%%6-*9 6-6-J}1%%%-%%9(>:%&$+",,4' -R:,"*T:, ' A>(T:,A H -%%(>:,RVJ} 6-R:,&6-%+!* ,&+!* ,V6-%+",%+",%+",&+",&+",&+"@,\  6-@1f!@16-J}p  6-z !6- -  A !6-& A C++!* @,)+!@1* @eJ},96-&@2C A @!6* @26-% -%%(>:,$B 2-%@1'-:J}%F:%+&,',> B  A> 2-%@(0%+&,'F:,4 > AG6-?:C:,:,@-%@ $+",@"&+",J(>:J!},N e A`jN -%-@!,(>:AV,0 : ApD AN At+ --@!$(>:J"}AV,( +$~D6-A6-@Q,F:%,"A86-@D6-ApK-%%A-'%1J#}%%;%%K%%A2E  -&&7$+"@,%$+"A,; E AJJ104,104,133,204,1J$}04,133,205,104,69,204,133,213,104,69,205,133,212,96ii104,104,133,213,104,133,212,104,133,215,104,133,214,162,4,160,0,177,J%}212,145,214,200,208,249,230,213230,215,202,208,240,96ALMOST DONE!!- 6-F:,%F:,$%A-%J&}, - (>:AA,,AR#(>:AA,#%=-@8-%(>:AA,+-9(>:J'}AA,= ] -1(#'THE ULTIMATE CHARACTER SET EDITOR'4(7(](! Created 8/2/83 by Vince Erceg]-@@"J(}/(PRESS TO BEGIN=%@4Q%@!@P]BBw; #A0!-A6AT%"+/ ;J)}@4.6-?:A6,-@.( PLEASE WAITB-6BBw&BBv.-:2$> B  J*}2[ARA!AS';-ApA?"EI W-@B[" 67,.>:, #$J+}EE104,173,31,208,201,6,240,10,232,142,10,212,142,25,208,76,1,6,96]]0,0,0,48,50,37,51,51,0,179,180,161,178,180,0,52,47,J,}0,35,40,33,46,39,37,0,36,41,51,48,44([[33,57,0,44,41,51,52,0,0,0,0,0,0,0,48,50,37,51,51,0,175,176,180,169,175,174,0,38,47,J-}502bb0,36,41,51,43,0,36,41,50,37,35,52,47,50,57,0,0,165,88,133,203,165,89,133,204,160,0,166,0,240<jj13,185,34,6,145,203J.},200,192,38,208,246,76,148,6,185,73,6,145,203,200,192,38,208,246,169,155,141,26,2FEE165,0,73,1,133,0,96,104,104,133,204,10J/}4,133,203,104,133,206,104ZRR133,205,166,206,160,0,169,0,145,203,136,208,251,230,204,202,48,6,208,244,164n**205,208,240,J0}198,204,160,0,145,203,96x- Ap A`-D:*.*?-@!6.7,?7<,4 FREE SECTOJ1}A`+'"P:',-+%,'!(+ A@-+%,'( ;( ('(PRESS ANY KEY TO CONTINUE1 ApJ2}; A>( ( (END..PRESS ANY KEY* Ap4 A> A  F:,  Ap AJ3}K6-6-@#6-%+6-%36-%;6-%C6-%K6-%3 6-%6-%6-%#6-%+6-%36-%J4}; 6-%6-%6-$'6-A36-A';6-%S6-AU6-%#6-AY+6-%36-%?6-AVG6J5}-%S6-B2y$ D2:FONT.BAS-A';6-%S6-AU6-%#6-AY+6-%36-%?6-AVG6H*  $ HELSTARJ ɠ̠ҠϠ é堠(!!N7}The following routines will2$$demonstrate some of the unique<$$features of ATARI XL computersFP""ҠΠN8}ԠӠZ1 +@@1@@9dnԠΠӠxQ0@@ @7N9}0@@@Q0@@ @##ΠƠŠҠΠAR@ A N:} A@@.(.(# Programs may be listed with fine/(/($scrolling by first poking a non-zeN;}ro-(-("into location 622 prior to opening,(,(!the screen editor, then using the$($(ATARI BASIC LIST commanN<}d. A РҠŠǠA"@""NOTE THAT IN THIS PROGRAM WE""DID NOT HAVN=}E TO OPEN AN IOCB"!!FOR THE SCREEN EDITOR SINCE,""THE BASIC GRAPHICS 0 COMMAND6DID IT FOR US.@J;ARN>}@ A1@A0; AT^ŠϠΠϠh̠ҠǠr|N?}٠ԠŠ-(-(" There is an initial delay of .8,(,(!seconds before a key will repeat./(/($TheN@} default value stored in location/(/($729 is 48. This value is the number/(/($of 60ths of a second to delay befoNA}re((((a key will repeat (48/60=.8).-(-(" To change the delay to 1/3 of a-(-("second, POKE 729,20. To maNB}ke this.(.(#delay one full second, POKE 729,60. A.(.(# The value stored in location 730-(-("isNC} the delay between repeats. The/(/($default is 6 or 6/60ths of a second..(.(#At this rate, a key will repeat tenND}0(0(%times per second. To slow the repeat&.(.(#rate down to five times per second,0-(-("POKE 730,12. To douNE}ble the speed,::(( POKE 730,3.(A)@ :A0@D AN٠ˠĠXb/(/($NF} The click sound you hear wheneverl.(.(#you type can also be disabled on XLv/(/($computers. The default value stNG}ored-(-("in location 731 is 0 and indicates.(.(#that the click is enabled. To dis-+(+( the click, simply PNH}OKE in a 255.A1AU A@@+(+( This program has just set the,(,(!the deNI}lay before repeat to 1/3 of-(-("a second, and doubled the speed of,(,(!the repeat rate. Fine scroll has/(/(NJ}$been left on, and the keyboard click((has been disabled.*(*( I now return control of this+(+( compuNK}ter to you and ATARI BASIC.%-@&@%( Jerry White 9@@'-@@9ARNL}((BASIC(IS *Р٠Š4堠>&A2&CLEAR HELP KEYH$NM}6-F:A2,$-@@#R'F:B2y,"@$6-@'$\(A@f/"@/(ՠĠŠNN}Р٠p/"@/(ՠĠԯРz."AE.(ՠĠ̯Р$.(.(# ThiNO}s program demonstrates how to,,($check for the HELP key from BASIC on(an ATARI XL computer.AANP}.(.(# Press HELP, SHIFT/HELP, CTRL/HELP,2&( or Press Ԡ to exit.26- A0B2y@NQ} A0  $4-@@!"( 4A@A F:A@,A5-@@#5(NR} ,-@@!"(Ԡ, A ԠҠԠ٠$ӠĠNS}Ů.8 A0B4-@@#4(PRESS Ԡ TO CONTINUELA@@`V F:B2y,"@ANT}`F:A@,Aj"-@@#"( START tA@@`~ F:B2y,"@AF:ANU}@,AP A(>:A%,CLEAR SCREENT0@@ @70@@@Q0@@NV} @T$Ԡ̠ĠC -@6?P<2@@ C$NW} D2:XLDEMO.BAS$Ԡ̠ĠC -@6?P<2@@ C$L+,DATHEXLINDATLIDDBYTPASCHKSUTOTAZ[A[@@APAP@ARY}( A @*** SHOOTING STARS *** 990,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,10,11,12,13,14,15r;@RZ},9@",/-@"3"<68,-@ L6-A V#A` @`r( CHECKING DATA86-%@(LR[}INE:!"8B:,@AF%6-F:A,%F:A,$AV+C(LINE  MISSING!Fq-@@R\}@56-@:7<,,&@H[6-@:7%@<%@,,&@Hq6-8,$@%8,#."@*@ $R]}". @%(% 6-%!A %6-&A-  ""@%2 A< F:A,@AdJ(R^} WRITING FILE 6-@,6-A 6#A@ @`J @%n(BAD DATA: LINE ddA209A9FF9D30259DDE26CA1R_}0F7A229A92585D6A93A85D5A009B9122591D58810F8A5D518690A85D5A5D6690085,695ddD6CA10E6A9CA8D3002A9248D3102A90085CD85CB85CF85D1R`}85D3A93385CEA93485CCA93585D0A93685D2A93785,788ddD4A9108D42068D43068DA006A9008DA1068DA2068DA3068D6006A9058D5006A9B48D0006ARa}D0AD24A1869378D01,948dd06A200AD0AD24A4A69329D1006E8E006D0F1A2008A0A0A0A0A0A69379D2006E8E006D0F0A200AD0AD229039D30,321dRb}d06E8E006D0F3A9308D07D4A93E8D2F02A9038D1DD0A900A891CB91CD91CF91D191D3C8D0F3A9008D45068D1ED0,300ddA9468DC002A90F8DC1028DCRc}2028DC302A9968DC502A9368DC602A9F88DC402A9038D4106A907A224A080205CE4,446$ddAD1FD0C906D0034C6824AD78022901D003CE0106AD780229Rd}08D003EE0006AD78022902D003EE0106AD78022904,186.ddD003CE0006AD0006C9C8D003CE0006AD0006C932D003EE0006AD0106C934D003EE0106AD0Re}106C9C8D003CE0106,3918ddAD00068D00D0A200AC0106BDFF2491CBE8C8E013D0F5A200BD3006D006FE1006DE2006BD3006C901D006FE1006,306BcRf}cFE2006BD3006C902D006DE1006FE2006BD3006C903D006DE1006DE2006E8E006D0C9A200BD1006C9CAD012BD30,69Ldd06D008A9039D3006189005A9Rg}029D3006BD1006C930D014BD3006C902F008A9009D3006189005A9019D3006BD20,766Vdd06C934D012BD3006D008A9019D3006189005A9029D3006BD2Rh}006C9D5D014BD3006C901D008A9009D3006189005,729`ccA9039D3006E8E006D093AD10068D01D0AD11068D02D0AD12068D03D0AD13068D05D0AD1406Ri}8D06D0AD15068D07,24jccD0A900AC200691CFA910C891CFC891CFA900C891CFA900AC210691D1A910C891D1C891D1A900C891D1A900AC22,98tdd0Rj}691D3A910C891D3C891D3A900C891D3A9EFAC230631CD91CDA910C811CD91CDA910C811CD91CDA9EFC831CD91,628~ccCDA9FBAC240631CD91CDA904C8Rk}11CD91CDA904C811CD91CDA9FBC831CD91CDA9BFAC250631CD91CDA940C811CD,19dd91CDA940C811CD91CDA9BFC831CD91CDEE4006AD4006C910D03ARl}A9008D4006CE4106AD4106D005A9038D4106A9,239ddC88D03D2AD4106C903D008A9788D02D2189014AD4106C902D008A9648D02D2189005A9558D02DRm}2AD42068D2525,812ddAD43068D2625ADA0068D2325ADA006C913D015ADA106D010EE5006EEA106A9A48D01D2A9018DA206ADA006C915,632bbD0Rn}17ADA106C901D010EE5006EEA106A9A48D01D2A9018DA206AD4506F0034C1724A9504E42060838ED4206282E,6dd4206A200EDA006E8E003D0F8AAA00Ro}0C8D0FDCAD0F8ADA206C901D017A9328D00D2EEA306ADA306C925D008EEA2,154cc06A9008DA306ADA206C902D017A9288D00D2EEA306ADA306C925D0Rp}08EEA206A9008DA306ADA206C903D017A920,39cc8D00D2EEA306ADA306C925D008EEA206A9008DA306ADA206C904D00DA9008D00D28D01D2A9008DA3Rq}06A98AA200,65dd9D2925E8EC5006D0F74C0E21CE5006A9A88D01D28D03D2A9328D00D2481869648D02D28DC00268A000A200E8D0,192ddFDC8C0Rr}19D0F6186901C964D0DFA9008D00D28D01D28D02D28D03D2A9468DC002A900AC5006992925AD5006F003,491dd4C7920A9008D5006AD8402F007AD1FDRs}0C906D0F4A900854D4C5B20AD09D00D0AD00D0BD00D0DD00D0ED00D0FD0,877cc29018D4506EE6006AD6006C93CD026A9008D6006EE4306AD4306C91ARt}D017A9108D4306EE4206AD4206C916D008,77bbEEA006A9108D42064C62E4707070471C25090909090909090909090909090909090909090909090909Ru}09090909,5dd0909090909090909090909090909090941CA24007C546C7C447C1010FEBABABA38382828EE0080000000000000,486 dd000001000Rv}074696D6500001A000000000000000000000000000000000000000000000000000000000000000000,944D:STARMAIN.BAS86 dd000001000Pl2 REM *** CASSETTE VERSION ***65 IF PASS=2 THEN FOR X=1 TO 18:PUT #1,0:NEXT X:CLOSE #1:END 70 ? "READY CASSETTE AND PRESS RVx}ETURN";:OPEN #1,8,128,"C:":RESTORE 200:FOR X=1 TO 40:READ N:PUT #1,N:NEXT X200 DATA 0,11,216,31,255,31,169,0,141,47,2,169,60Vy},141,2,211,169,0,141,231,2,133,14,169,56,141,232,2210 DATA 133,15,169,0,133,10,169,32,133,11,24,96,31,169,0,141,47,2,169,60Td2 REM *** DISK VERSION ***65 IF PASS=2 THEN PUT #1,224:PUT #1,2:PUT #1,225:PUT #1,2:PUT #1,0:PUT #1,32:CLOSE #1:END 70 ? "IZ{}NSERT DISK WITH DOS, PRESS RETURN";:DIM IN$(1):INPUT IN$:OPEN #1,8,0,"D:AUTORUN.SYS"90 PUT #1,255:PUT #1,255:PUT #1,0:PUT #1Z|},32:PUT #1,69:PUT #1,37SS RETURN";:DIM IN$(1):INPUT IN$:OPEN #1,8,0,"D:AUTORUN.SYS"90 PUT #1,255:PUT #1,255:PUT #1,0:PUT #1X;; Shooting stars by Dennis Fox;; Page zero usagePBASE=$CB;POINTERS TO...MBASE=$CD;MISSILES,BASE2=$CF;PLAYER^~}1,BASE3=$D1;PLAYER2,BASE4=$D3;PLAYER3ADDR=$D5;2-BYTE POINTER; Page 6 usageX=$600Y=$601XM=$610YM=$6^}20DM=$630T1=$640T2=$641TI1=$642TI2=$643HIT=$645LIFE=$650TI3=$660TI4=$6A0ELF=$6A1SF1=$6A2STI^}ME=$6A3; Operating system equatesATTRAC=$4D;ATTRACT MODE POINTERPCOLR0=$2C0;PLAYER COLORSPCOLR1=$2C1PCOLR2=^}$2C2PCOLR3=$2C3COLOR0=$2C4;PLAYFIELD COLORSCOLOR1=$2C5COLOR2=$2C6COLOR3=$2C7COLOR4=$2C8SDMCTL=$22F;DM^}A CONTROLSDLSTL=$230;DISP LIST POINTERSDLSTH=$231STICK0=$278;JOYSTICKSTRIG0=$284;STICK BUTTONHITCLR=$D01E;^}COLLISION CLEARHPOSP0=$D000;P/M HOR. POSITIONSHPOSP1=$D001HPOSP2=$D002HPOSP3=$D003HPOSM0=$D004HPOSM1=$D005^}HPOSM2=$D006HPOSM3=$D007M1PL=$D009;COLLISION REGISTERSM2PL=$D00AM3PL=$D00BP1PL=$D00DP2PL=$D00EP3PL=$^}D00FGRACTL=$D01D;GRAPHIC CONTROLCONSOL=$D01F;CONSOLE BUTTONSAUDF1=$D200;AUDIO CONTROLSAUDC1=$D201AUDF2=$D20^}2AUDC2=$D203RANDOM=$D20A;RANDOM #PMBASE=$D407;P/M START ADDRSETVBV=$E45C;VERT BLANK SET VECTORXITVBV=$E462^};VERT BLANK EXIT; set up screen and display list ORG $2000SSTARLDX#9LDA#$FFSETTBSTASCRNA,X;SET TOP...STASCR^}NC,X;AND BOTTOM...DEX;OF SCREENBPLSETTBLDX#41LDA#SCRNB/256;POINT TO...STAADDR+1;MIDDLE OF SCREENLDA#SCR^}NB&255STAADDRSETMIDLDY#9MIDLPLDAMIDBYT,Y;COPY MIDDLE BYTES...STA(ADDR),Y;TO SCREEN RAMDEYBPLMIDLPLDAADD^}R;NOW ADD 10 BYTES...CLC;TO POINT TO...ADC#10;NEXT LINESTAADDRLDAADDR+1ADC#0STAADDR+1DEX;ANOTHER LIN^}E?BPLSETMID;YES!LDA#DLIST&255;POINT TOSTASDLSTL;DISPLAYLDA#DLIST/256;LISTSTASDLSTHLDA#$00;SET LOW BYTE^}S...STAMBASE;OF P/M POINTERSSTAPBASESTABASE2STABASE3STABASE4LDA#$33;NOW SET HI BYTESSTAMBASE+1;TO POI^}NT TOLDA#$34;VARIOUS P/M AREASSTAPBASE+1LDA#$35STABASE2+1LDA#$36STABASE3+1LDA#$37STABASE4+1; Set p^}layers starting positionSTART2LDA#16;INITIALIZE TIMERSSTATI1STATI2STATI4LDA#$00STAELFSTASF1STASTIME^}STATI3LDA#5;START W/5 LIVESSTALIFESTARTLDA#180;SET UP...STAX;ASTRONAUT XLDARANDOM;NOW GET...LSRA;RA^}NDOM #CLC;AND SET UPADC#55;ASTRONAUT YSTAY; Set missles horizontal positionLDX#$00;GET RANDOM...L1LDARAN^}DOM;HORIZONTALLSRA;POSITION,LSRA;MAKE SURE IT'SADC#50;ON SCREEN,STAXM,X;STORE ITINX;NEXT MISSILECPX#6^};ALL DONE?BNEL1;NOT YET!; Set missles vertical positionLDX#$00;START W/MISSILE 0L2TXA;GET MISSILE #ASLA;M^}ULTIPLY...ASLA;MISSILE...ASLA;NUMBER...ASLA;BY 32,ASLA;MAKE SURE IT'S...ADC#55;ON SCREEN,STAYM,X;AND ^}STORE IT!INX;NEXT MISSILECPX#6;ALL DONE?BNEL2;NOT YET!; Set missiles' starting directionsLDX#$00L3LDARAN^}DOM;GET RANDOM...AND#$03;DIRECTIONSTADM,X;AND STOREINX;NEXT MISSILECPX#6;ALL DONE?BNEL3;NOT YET!; Set ^}up player missile graphics; Single line resolutionLDA#$30;POINT TO P/M AREASTAPMBASELDA#62;TURN ON SCREENSTAS^}DMCTLLDA#3;SET P/M GRAPHICSSTAGRACTLLDA#$00;NOW CLEAR OUT...TAY;ALL MISSILESA1STA(PBASE),Y;AND PLAYERSST^}A(MBASE),YSTA(BASE2),YSTA(BASE3),YSTA(BASE4),YINYBNEA1LDA#$00;NO COLLISION!STAHITSTA HITCLRLDA#$46^};SET UP COLORSSTAPCOLR0LDA#15STAPCOLR1STAPCOLR2STAPCOLR3LDA#150STACOLOR1LDA#54STACOLOR2LDA#$F8^}STACOLOR0LDA#3STAT2LDA#$07;NOW START UP...LDX#VBI/256;OUR VERTICAL BLANK...LDY#VBI&255;INTERRUPT!JSRS^}ETVBV; The game begins hereBACKLDACONSOL;CHECK CONSOLE KEYSCMP#6;START PRESSED?BNEJOY2;NOPE! JMPDEATH;GO^} TO RESTART!; Read joystickJOY2LDASTICK0;GET ASTRONAUT...AND#1;DIRECTIONBNEO1DECY;UPO1LDASTICK0AND#$0^}8BNEO2INCX;RIGHTO2LDASTICK0AND#$02BNEO3INCY;DOWNO3LDASTICK0AND#$04BNEO4DECX;LEFTO4LDAX;G^}ET ASTRO. XCMP#200;TOO FAR RIGHT?BNEO5;IT'S OKDECX;TOO FAR!O5LDAXCMP#50;TOO FAR LEFT?BNEO6;OK.INCX^};TOO FAR!O6LDAY;GET ASTRO. YCMP#52;TOO FAR UP?BNEO7;OK.INCY;TOO FAR!O7LDAYCMP#200;TOO FAR DOWN?BNEO^}8;OK.DECY;TOO FAR!; Put astronaut on playfieldO8LDAX;GO AHEAD AND SET...STAHPOSP0;HOR. POSITIONLDX#$00;NO^}W COPY THE...LDYY;ASTRONAUT IMAGE...B1LDAANAUT,X;INTO PLAYER 1STA(PBASE),YINXINYCPX#19BNEB1; Move miss^}ilesLDX#$00D0LDADM,X;GET MISSILE DIR.BNED1INCXM,X;RIGHT...DECYM,X;AND UPD1LDADM,XCMP#1BNED2INC^}XM,X;RIGHT...INCYM,X;AND DOWN!D2LDADM,XCMP#2BNED3DECXM,X;LEFT...INCYM,X;AND DOWN!D3LDADM,XCMP#3^}BNEDO1DECXM,X;LEFT...DECYM,X;AND UP!DO1INX;NEXT MISSILECPX#6;ALL DONE?BNED0;NO, DO OTHERS!; Check if m^}issile has hit wallLDX#$00C0LDAXM,X;GET X POS.CMP#202;TOO FAR RIGHT?BNEC1;IT'S OK.LDADM,X;IT'S TOO FAR,^}BNEDI1;WE MUST REVERSELDA#3;THE DIRECTION!STADM,XCLCBCCC1DI1LDA#2STADM,XC1LDAXM,X;GET X POS.CMP#48^};TOO FAR LEFT?BNEC2;OK.LDADM,X;REVERSE DIRECTION!CMP#2BEQDI2LDA#0STADM,XCLCBCCC2DI2LDA#1STADM^},XC2LDAYM,X;GET Y POS.CMP#52;TOO FAR UP?BNEC3;OK.LDADM,X;REVERSE!BNEDI3LDA#1STADM,XCLCBCCC3DI3^}LDA#2STADM,XC3LDAYM,X;GET Y POS.CMP#213;TOO FAR DOWN?BNEC4;OK.LDADM,X;REVERSE!CMP#1BNEDY2LDA#$0^}0STADM,XCLCBCCC4DY2LDA#3STADM,XC4INX;NEXT MISSILECPX#6;ALL DONE?BNEC0;NO, DO OTHERS!; Plot missil^}es on playfieldLDAXM;SET ALL MISSILES...STAHPOSP1;HORIZONTAL...LDAXM+1;POSITIONS!STAHPOSP2LDAXM+2STAHPO^}SP3LDAXM+3STAHPOSM1LDAXM+4STAHPOSM2LDAXM+5STAHPOSM3LDA#$00;PLOT 1ST MISSILELDYYM;IN PLAYER 1STA(^}BASE2),YLDA#$10INYSTA(BASE2),YINYSTA(BASE2),YLDA#$00INYSTA(BASE2),YLDA#$00;PLOT 2ND MISSILELDYYM^}+1;IN PLAYER 2STA(BASE3),YLDA#$10INYSTA(BASE3),YINYSTA(BASE3),YLDA#$00INYSTA(BASE3),YLDA#$00;PL^}OT 3RD MISSILELDYYM+2;IN PLAYER 3STA(BASE4),YLDA#$10INYSTA(BASE4),YINYSTA(BASE4),YLDA#$00INYSTA(^}BASE4),YLDA#$EF;PLOT 4TH MISSILELDYYM+3;IN MISSILE 1AND(MBASE),YSTA(MBASE),YLDA#$10INYORA(MBASE),YSTA^}(MBASE),YLDA#$10INYORA(MBASE),YSTA(MBASE),YLDA#$EF;PLOT 5TH MISILEINY;IN MISSILE 2AND(MBASE),YSTA(M^}BASE),YLDA#$FBLDYYM+4AND(MBASE),YSTA(MBASE),YLDA#$04INYORA(MBASE),YSTA(MBASE),YLDA#$04INYORA(M^}BASE),YSTA(MBASE),YLDA#$FB;PLOT 6TH MISSILEINY;IN MISSILE 3AND(MBASE),YSTA(MBASE),YLDA#$BFLDYYM+5AND^}(MBASE),YSTA(MBASE),YLDA#$40INYORA(MBASE),YSTA(MBASE),YLDA#$40INYORA(MBASE),YSTA(MBASE),YLDA#$BF^}INYAND(MBASE),YSTA(MBASE),Y; Create soundINCT1LDAT1CMP#$10BNESO1LDA#$00STAT1DECT2LDAT2BN^}ESO2LDA#3STAT2SO2LDA#$C8;SET SOUND CONTROLSTAAUDC2LDAT2;GET SOUND NUMBERCMP#3;SOUND 3?BNES2;NO!LD^}A#120;SET 3RD...STAAUDF2;SOUND FREQUENCYCLCBCCSO1;GO SHOW TIMES2LDAT2CMP#2;SOUND 2?BNES3;NO!LDA#100^};SET 2ND...STAAUDF2;SOUND FREQUENCYCLCBCCSO1;AND SHOW TIMES3LDA#85;SET 1STSTAAUDF2;SOUND FREQUENCYSO1LDA^}TI1;SHOW DIGIT 1...STASCREEN+9;OF SECONDSLDATI2;SHOW DIGIT 2...STASCREEN+10;OF SECONDSLDATI4;SHOW MINUTES!^}STASCREEN+7; Check for extra lifeLDATI4;GET MINUTESCMP#19;3 MINUTES?BNEOELC;NO!LDAELF;DONE EXTRA LIFE YE^}T?BNEOELC;YES, NO MORE!INCLIFE;ANOTHER LIFEINCELF;SET EXTRA LIFE FLAGLDA#$A4;SET UP FOR...STAAUDC1;EXTRA ^}LIFE SOUNDLDA#$01STASF1OELCLDATI4;GET MINUTESCMP#21;5 MINUTES?BNEOEL;NO!LDAELF;GOT 2ND EXTRA?CMP#1^}BNEOEL;NO MORE!INCLIFE;ANOTHER LIFE!INCELF;INC EXTRA LIFE FLAGLDA#$A4;SET UP FOR...STAAUDC1;EXTRA LIFE SOUN^}DLDA#$01STASF1; Check for ending sequenceOELLDAHIT;ASTRO HIT DEBRIS?BEQNEND;NO, HE'S OK.JMPEND;UH-OH!NE^}NDLDA#80;THIS SECTIONLSRTI1;CREATES A TIMEPHP;DELAY USINGSEC;THE TIME VARIABLESSBCTI1;TI1 AND TI4PLPRO^}LTI1LDX#$00SMORSBCTI4INXCPX#3BNESMORTAXTD1LDY#$00;THIS IS ATD2INY;TIME DELAYBNETD2;ROUTINE!DEX^}BNETD1; Play extra life soundLDASF1;GET BONUS SOUND FLAGCMP#1;FIRST FREQ?BNESC2;NO!LDA#50;SET 1ST BONUS^} FREQ.STAAUDF1INCSTIME;INC SOUND TIMERLDASTIMECMP#$25;END OF SOUND?BNESC2;NOT YET!INCSF1;NEXT FREQLDA^}#$00;NO MORE SOUND!STASTIMESC2LDASF1;GET BONUS SOUND FLAGCMP#2;SECOND FREQ?BNESC3;NO!LDA#40;SET FREQ.S^}TAAUDF1INCSTIME;INCREMENT TIMERLDASTIMECMP#$25;SOUND DONE?BNESC3;NO!INCSF1;NEXT FREQLDA#$00;ALL DONE!^}STASTIMESC3LDASF1;GET BONUS SOUND FLAGCMP#3;3RD FREQ?BNESC4;NO!LDA#32;SET FREQ.STAAUDF1INCSTIME;INC^} SOUND TIMERLDASTIMECMP#$25;SOUND DONE?BNESC4;NO!INCSF1;SET FOR ENDLDA#$00;ALL DONE!STASTIMESC4LDASF^}1;GET BONUS SOUND FLAGCMP#4;END OF SOUND?BNESC5;NO!LDA#00;SHUT OFF SOUND!STAAUDF1STAAUDC1LDA#$00;ALL D^}ONE!STASTIMESC5LDA#138;UPDATE LIVES...LDX#$00;DISPLAYDMORESTASCREEN+13,X;ALL LIVESINXCPXLIFEBNEDMORE^}JMPBACKENDDECLIFE;1 LESS LIFELDA#$A8;INIT DEATH SOUNDSTAAUDC1STAAUDC2LDA#50;INIT FREQ.SASTAAUDF1PHA^}CLCADC#100;INCREMENT SOUNDSTAAUDF2STAPCOLR0;FLASH ASTRONAUTPLALDY#$00;TIME DELAYDLY2LDX#$00DLY1INXBNE^}DLY1INYCPY#25BNEDLY2CLCADC#$01CMP#100;END OF DEATH?BNESA;NO, LOOP BACKLDA#$00;SHUT OFF SOUNDSTAA^}UDF1STAAUDC1STAAUDF2STAAUDC2LDA#$46;RESET...STAPCOLR0;ASTRONAUT COLORLDA#$00;REMOVE...LDYLIFE;LIFE I^}NDICATOR...STASCREEN+13,Y;FROM SCREENLDALIFE;ANY MORE LIVES?BEQDEATH;NO! END OF GAME!JMPSTART;ANOTHER LIFE.D^}EATHLDA#00;ZERO LIVESSTALIFEAGAINLDASTRIG0;STICK TRIGGER PRESSED?BEQRESTRT;YES!LDACONSOL;GET CONSOLE KEYC^}MP#6;START PRESSED?BNEAGAIN;NO!RESTRTLDA#$00;RESET...STAATTRAC;ATTRACT MODEJMPSTART2;RESTART GAME.; Verti\}